package com.njupt.util;


import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;


/**
 * @Author: XJL
 * @Description:
 * @Date: Create in 16:21 2018/5/29
 * @Modified By:
 **/
public class UploadUtil {

   public static String Uploadpic(MultipartFile localFile) throws IOException {
       //构造一个带指定Zone对象的配置类
       Configuration cfg = new Configuration(Zone.zone0());
       //...其他参数参考类注释
       UploadManager uploadManager = new UploadManager(cfg);
       //...生成上传凭证，然后准备上传
       String accessKey = Constant.accessKey;
       String secretKey = Constant.SECRET_KEY;
       String bucket = Constant.bucket;
       //如果是Windows情况下，格式是 D:\\qiniu\\test.png
       //String localFilePath = "/home/qiniu/test.png";
       //默认不指定key的情况下，以文件内容的hash值作为文件名
       String key = null;
       Auth auth = Auth.create(accessKey, secretKey);
       String upToken = auth.uploadToken(bucket);

       try {
           Response response = uploadManager.put(localFile.getBytes(), key, upToken);
           //解析上传成功的结果
           DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
           System.out.println(putRet.key);
           System.out.println(putRet.hash);
           return putRet.key;
       } catch(QiniuException ex) {
           Response r = ex.response;
           System.err.println(r.toString());
           try {
               System.err.println(r.bodyString());
           } catch (QiniuException ex2) {
               //ignore
           }
       }
       return null;
   }
}
